"""
======================
Author: 柠檬班-小简
Time: 2022/9/30 21:21
Project: py54_编程技术
Company: 湖南零檬信息技术有限公司
======================
"""
import os
from openpyxl import load_workbook
from loguru import logger


class MyExcel:

    def __init__(self,excel_path, sheet_name):
        logger.info("开始从excel中读取数据...")
        logger.info(f"excel文件路径:{excel_path} ,读取的表单名：{sheet_name}")
        try:
            self.wb = load_workbook(excel_path)
            self.sh = self.wb[sheet_name]
        except:
            print("excel路径不存在或者无法读取。也有可能是表单名称不存在。")
            raise

    def select_sheet(self,sheet_name):
        if sheet_name in self.wb.sheetnames:
            self.sh = self.wb[sheet_name]
        else:
            print("切换失败！没有这个表单名称。")

    def read_all_data(self):
        """
        读取一个表单下面的所有测试用例，一行就是一个用例。
        :return: 用例列表。存储的是表单当中所有的用例。
        """
        case_list = []
        # 得到表单的第一行标题
        title = list(self.sh.values)[0]
        # 标题与测试用例进行一个zip的字典拼接：
        for item in list(self.sh.values)[1:]:
            new_dict = dict(zip(title, item))
            case_list.append(new_dict)
        return case_list

    # def write_data_to_cell(self):
    #     pass
    #
    # def save(self):
    #     pass

if __name__ == '__main__':
    dir = os.path.dirname(os.path.abspath(__file__))
    file_path = os.path.join(dir, "我的测试数据.xlsx")

    me = MyExcel(file_path, "login")
    cases = me.read_all_data()
    # 打印列表里的所有用例
    for item in cases:
        print(item)

    print("=======================================")
    me.select_sheet("Sheet2")
    cases = me.read_all_data()
    # 打印列表里的所有用例
    for item in cases:
        print(item)